Batch Apex হলো Salesforce-এর একটি Asynchronous Apex ফ্রেমওয়ার্ক, যা বড় ডেটাসেট বা দীর্ঘ সময় ধরে চলা কার্যক্রম ছোট ছোট অংশে ভাগ করে প্রসেস করার জন্য ব্যবহৃত হয়। Salesforce-এর গভর্নর লিমিট থাকা সত্ত্বেও Batch Apex বড় ডেটাসেটের উপর কার্যক্ষমতা নিশ্চিত করে এবং একাধিক ব্যাচে বিভক্ত করে ডেটা প্রক্রিয়া করে। এটি ব্যবহার করে ডেটাবেসের একটি বড় টেবিলের হাজার হাজার রেকর্ড নিয়মিত আপডেট, প্রসেস, বা ডিলিট করা যায়।
Batch Apex ক্লাস তৈরি করতে Database.Batchable
ইন্টারফেস ইমপ্লিমেন্ট করতে হয় এবং তিনটি মেথড ব্যবহার করতে হয়:
নিচে Account
অবজেক্টের ডেটা প্রসেস করতে একটি সাধারণ Batch Apex ক্লাসের উদাহরণ দেয়া হলো।
public class AccountBatchExample implements Database.Batchable<SObject> {
// start মেথডে প্রাথমিক SOQL কুয়েরি বা ডেটাসেট সিলেক্ট করা হয়
public Database.QueryLocator start(Database.BatchableContext BC) {
return Database.getQueryLocator('SELECT Id, Name FROM Account');
}
// execute মেথডে প্রতিটি ব্যাচের ২০০টি রেকর্ড প্রক্রিয়া করা হয়
public void execute(Database.BatchableContext BC, List<SObject> scope) {
for (SObject s : scope) {
Account acc = (Account) s;
acc.Name = acc.Name + ' Updated';
}
update scope;
}
// finish মেথডে ব্যাচ প্রক্রিয়াকরণের পরে চূড়ান্ত কাজ সম্পন্ন করা হয়
public void finish(Database.BatchableContext BC) {
System.debug('Batch process completed.');
}
}
// Batch Apex ক্লাস এক্সিকিউট করা
Database.executeBatch(new AccountBatchExample(), 100);
Batch Apex ক্লাস চালানোর জন্য Database.executeBatch()
মেথড ব্যবহার করতে হয়। এখানে, প্রথম প্যারামিটার হিসেবে Batch Apex ক্লাসের ইনস্ট্যান্স এবং দ্বিতীয় প্যারামিটার হিসেবে ব্যাচ সাইজ প্রদান করতে হয়।
Database.executeBatch(new AccountBatchExample(), 100);
এখানে 100
হল ব্যাচ সাইজ, অর্থাৎ প্রতিটি ব্যাচে ১০০টি রেকর্ড প্রক্রিয়াকৃত হবে।
Batch Apex বড় ডেটাসেট বা দীর্ঘমেয়াদী কার্যক্রম ছোট ব্যাচে ভাগ করে প্রক্রিয়া করার একটি শক্তিশালী পদ্ধতি, যা Salesforce গভর্নর লিমিটের মধ্যে থেকে কার্যক্ষমতা নিশ্চিত করে। Batch Apex বড় ডেটা ক্লিন-আপ, ডেটা প্রসেসিং, এবং অ্যাসিঙ্ক্রোনাস কার্যক্রমে ব্যবহৃত হয় এবং Salesforce অ্যাপ্লিকেশনকে আরও কার্যকর ও সুরক্ষিত রাখতে সহায়ক।
common.read_more